home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_05 / allison / set.cpp < prev    next >
C/C++ Source or Header  |  1995-03-12  |  942b  |  52 lines

  1. LISTING 24 - SetOfInt implementation
  2. // set.cpp
  3. #include <iostream.h>
  4. #include <algo.h>
  5. #include "set.h"
  6.  
  7. SetOfInt::SetOfInt()
  8. {
  9.     nelems = 0;
  10. }
  11.  
  12. bool SetOfInt::contains(int x) const
  13. {
  14.     const int *begin = elems;
  15.     const int *end = elems + nelems;
  16.     return find(begin,end,x) != end;
  17. }
  18.  
  19. void SetOfInt::insert(int x)
  20. {
  21.     if (nelems < LIMIT && !contains(x))
  22.         elems[nelems++] = x;
  23. }
  24.  
  25. void SetOfInt::remove(int x)
  26. {
  27.     const int *begin = elems;
  28.     const int *end = begin + nelems;
  29.     const int *p = find(begin,end,x);
  30.  
  31.     if (p != end)
  32.     {
  33.         // Shuffle elements up to cover x
  34.         for (int *q = (int *)p; q < end-1; ++q)
  35.             *q = *(q+1);
  36.         --nelems;
  37.     }
  38. }
  39.  
  40. void SetOfInt::print(ostream & os) const
  41. {
  42.     os << '{';
  43.     for (int i = 0; i < nelems; ++i)
  44.     {
  45.         if (i > 0)
  46.             os << ',';
  47.         os << elems[i];
  48.     }
  49.     os << '}';
  50. }
  51.  
  52.